home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byteibm.arc / WILTON.ARC / CSLS5.ASM < prev    next >
Encoding:
Assembly Source File  |  1985-07-12  |  19.5 KB  |  625 lines

  1.             title    '256-character table for HGC Plus'
  2.             name    csls5
  3.             page    55,132
  4.  
  5. ;
  6. ; RAM-Loadable Character Sets for the IBM PC
  7. ; Listing 5
  8. ;
  9. ; Richard Wilton
  10. ; July 1986
  11. ;
  12.  
  13. ; Notes:
  14. ;    This program loads a 256-character definition table for use in
  15. ;    alphanumeric video display modes.  The program assumes
  16. ;    that the proper video mode has already been established.
  17. ;
  18. ;    The display is configured for 80 character columns and 43 rows.
  19. ;
  20. ;    For Hercules Graphics Card Plus ONLY.
  21.  
  22.  
  23. cseg    segment para public 'CODE'
  24.  
  25.     assume    cs:cseg,ds:cseg
  26.  
  27.     org    100h            ; initial program counter for .COM file
  28.  
  29. label0:
  30.     jmp    label1            ; jump around character set table
  31.     even
  32.  
  33. ; definitions for 8 by 8 characters 00h through FFh, with 8 bytes padding
  34. ;  between character definitions
  35. csdefs    db    000h,000h,000h,000h,000h,000h,000h,000h        ; 000h
  36.     db    8 dup(0)
  37.     db    07Eh,081h,0A5h,081h,0BDh,099h,081h,07Eh        ; 001h
  38.     db    8 dup(0)
  39.     db    07Eh,0FFh,0DBh,0FFh,0C3h,0E7h,0FFh,07Eh        ; 002h
  40.     db    8 dup(0)
  41.     db    06Ch,0FEh,0FEh,0FEh,07Ch,038h,010h,000h        ; 003h
  42.     db    8 dup(0)
  43.     db    010h,038h,07Ch,0FEh,07Ch,038h,010h,000h        ; 004h
  44.     db    8 dup(0)
  45.     db    038h,07Ch,038h,0FEh,0FEh,07Ch,038h,07Ch        ; 005h
  46.     db    8 dup(0)
  47.     db    010h,010h,038h,07Ch,0FEh,07Ch,038h,07Ch        ; 006h
  48.     db    8 dup(0)
  49.     db    000h,000h,018h,03Ch,03Ch,018h,000h,000h        ; 007h
  50.     db    8 dup(0)
  51.     db    0FFh,0FFh,0E7h,0C3h,0C3h,0E7h,0FFh,0FFh        ; 008h
  52.     db    8 dup(0)
  53.     db    000h,03Ch,066h,042h,042h,066h,03Ch,000h        ; 009h
  54.     db    8 dup(0)
  55.     db    0FFh,0C3h,099h,0BDh,0BDh,099h,0C3h,0FFh        ; 00Ah
  56.     db    8 dup(0)
  57.     db    00Fh,007h,00Fh,07Dh,0CCh,0CCh,0CCh,078h        ; 00Bh
  58.     db    8 dup(0)
  59.     db    03Ch,066h,066h,066h,03Ch,018h,07Eh,018h        ; 00Ch
  60.     db    8 dup(0)
  61.     db    03Fh,033h,03Fh,030h,030h,070h,0F0h,0E0h        ; 00Dh
  62.     db    8 dup(0)
  63.     db    07Fh,063h,07Fh,063h,063h,067h,0E6h,0C0h        ; 00Eh
  64.     db    8 dup(0)
  65.     db    099h,05Ah,03Ch,0E7h,0E7h,03Ch,05Ah,099h        ; 00Fh
  66.     db    8 dup(0)
  67.     db    080h,0E0h,0F8h,0FEh,0F8h,0E0h,080h,000h        ; 010h
  68.     db    8 dup(0)
  69.     db    002h,00Eh,03Eh,0FEh,03Eh,00Eh,002h,000h        ; 011h
  70.     db    8 dup(0)
  71.     db    018h,03Ch,07Eh,018h,018h,07Eh,03Ch,018h        ; 012h
  72.     db    8 dup(0)
  73.     db    066h,066h,066h,066h,066h,000h,066h,000h        ; 013h
  74.     db    8 dup(0)
  75.     db    07Fh,0DBh,0DBh,07Bh,01Bh,01Bh,01Bh,000h        ; 014h
  76.     db    8 dup(0)
  77.     db    03Eh,063h,038h,06Ch,06Ch,038h,0CCh,078h        ; 015h
  78.     db    8 dup(0)
  79.     db    000h,000h,000h,000h,07Eh,07Eh,07Eh,000h        ; 016h
  80.     db    8 dup(0)
  81.     db    018h,03Ch,07Eh,018h,07Eh,03Ch,018h,0FFh        ; 017h
  82.     db    8 dup(0)
  83.     db    018h,03Ch,07Eh,018h,018h,018h,018h,000h        ; 018h
  84.     db    8 dup(0)
  85.     db    018h,018h,018h,018h,07Eh,03Ch,018h,000h        ; 019h
  86.     db    8 dup(0)
  87.     db    000h,018h,00Ch,0FEh,00Ch,018h,000h,000h        ; 01Ah
  88.     db    8 dup(0)
  89.     db    000h,030h,060h,0FEh,060h,030h,000h,000h        ; 01Bh
  90.     db    8 dup(0)
  91.     db    000h,000h,0C0h,0C0h,0C0h,0FEh,000h,000h        ; 01Ch
  92.     db    8 dup(0)
  93.     db    000h,024h,066h,0FFh,066h,024h,000h,000h        ; 01Dh
  94.     db    8 dup(0)
  95.     db    000h,018h,03Ch,07Eh,0FFh,0FFh,000h,000h        ; 01Eh
  96.     db    8 dup(0)
  97.     db    000h,0FFh,0FFh,07Eh,03Ch,018h,000h,000h        ; 01Fh
  98.     db    8 dup(0)
  99.     db    000h,000h,000h,000h,000h,000h,000h,000h        ; 020h
  100.     db    8 dup(0)
  101.     db    030h,078h,078h,030h,030h,000h,030h,000h        ; 021h
  102.     db    8 dup(0)
  103.     db    06Ch,06Ch,06Ch,000h,000h,000h,000h,000h        ; 022h
  104.     db    8 dup(0)
  105.     db    06Ch,06Ch,0FEh,06Ch,0FEh,06Ch,06Ch,000h        ; 023h
  106.     db    8 dup(0)
  107.     db    030h,07Ch,0C0h,078h,00Ch,0F8h,030h,000h        ; 024h
  108.     db    8 dup(0)
  109.     db    000h,0C6h,0CCh,018h,030h,066h,0C6h,000h        ; 025h
  110.     db    8 dup(0)
  111.     db    038h,06Ch,038h,076h,0DCh,0CCh,076h,000h        ; 026h
  112.     db    8 dup(0)
  113.     db    060h,060h,0C0h,000h,000h,000h,000h,000h        ; 027h
  114.     db    8 dup(0)
  115.     db    018h,030h,060h,060h,060h,030h,018h,000h        ; 028h
  116.     db    8 dup(0)
  117.     db    060h,030h,018h,018h,018h,030h,060h,000h        ; 029h
  118.     db    8 dup(0)
  119.     db    000h,066h,03Ch,0FFh,03Ch,066h,000h,000h        ; 02Ah
  120.     db    8 dup(0)
  121.     db    000h,030h,030h,0FCh,030h,030h,000h,000h        ; 02Bh
  122.     db    8 dup(0)
  123.     db    000h,000h,000h,000h,000h,030h,030h,060h        ; 02Ch
  124.     db    8 dup(0)
  125.     db    000h,000h,000h,0FCh,000h,000h,000h,000h        ; 02Dh
  126.     db    8 dup(0)
  127.     db    000h,000h,000h,000h,000h,030h,030h,000h        ; 02Eh
  128.     db    8 dup(0)
  129.     db    006h,00Ch,018h,030h,060h,0C0h,080h,000h        ; 02Fh
  130.     db    8 dup(0)
  131.     db    07Ch,0C6h,0CEh,0DEh,0F6h,0E6h,07Ch,000h        ; 030h
  132.     db    8 dup(0)
  133.     db    030h,070h,030h,030h,030h,030h,0FCh,000h        ; 031h
  134.     db    8 dup(0)
  135.     db    078h,0CCh,00Ch,038h,060h,0CCh,0FCh,000h        ; 032h
  136.     db    8 dup(0)
  137.     db    078h,0CCh,00Ch,038h,00Ch,0CCh,078h,000h        ; 033h
  138.     db    8 dup(0)
  139.     db    01Ch,03Ch,06Ch,0CCh,0FEh,00Ch,01Eh,000h        ; 034h
  140.     db    8 dup(0)
  141.     db    0FCh,0C0h,0F8h,00Ch,00Ch,0CCh,078h,000h        ; 035h
  142.     db    8 dup(0)
  143.     db    038h,060h,0C0h,0F8h,0CCh,0CCh,078h,000h        ; 036h
  144.     db    8 dup(0)
  145.     db    0FCh,0CCh,00Ch,018h,030h,030h,030h,000h        ; 037h
  146.     db    8 dup(0)
  147.     db    078h,0CCh,0CCh,078h,0CCh,0CCh,078h,000h        ; 038h
  148.     db    8 dup(0)
  149.     db    078h,0CCh,0CCh,07Ch,00Ch,018h,070h,000h        ; 039h
  150.     db    8 dup(0)
  151.     db    000h,030h,030h,000h,000h,030h,030h,000h        ; 03Ah
  152.     db    8 dup(0)
  153.     db    000h,030h,030h,000h,000h,030h,030h,060h        ; 03Bh
  154.     db    8 dup(0)
  155.     db    018h,030h,060h,0C0h,060h,030h,018h,000h        ; 03Ch
  156.     db    8 dup(0)
  157.     db    000h,000h,0FCh,000h,000h,0FCh,000h,000h        ; 03Dh
  158.     db    8 dup(0)
  159.     db    060h,030h,018h,00Ch,018h,030h,060h,000h        ; 03Eh
  160.     db    8 dup(0)
  161.     db    078h,0CCh,00Ch,018h,030h,000h,030h,000h        ; 03Fh
  162.     db    8 dup(0)
  163.     db    07Ch,0C6h,0DEh,0DEh,0DEh,0C0h,078h,000h        ; 040h
  164.     db    8 dup(0)
  165.     db    030h,078h,0CCh,0CCh,0FCh,0CCh,0CCh,000h        ; 041h
  166.     db    8 dup(0)
  167.     db    0FCh,066h,066h,07Ch,066h,066h,0FCh,000h        ; 042h
  168.     db    8 dup(0)
  169.     db    03Ch,066h,0C0h,0C0h,0C0h,066h,03Ch,000h        ; 043h
  170.     db    8 dup(0)
  171.     db    0F8h,06Ch,066h,066h,066h,06Ch,0F8h,000h        ; 044h
  172.     db    8 dup(0)
  173.     db    0FEh,062h,068h,078h,068h,062h,0FEh,000h        ; 045h
  174.     db    8 dup(0)
  175.     db    0FEh,062h,068h,078h,068h,060h,0F0h,000h        ; 046h
  176.     db    8 dup(0)
  177.     db    03Ch,066h,0C0h,0C0h,0CEh,066h,03Eh,000h        ; 047h
  178.     db    8 dup(0)
  179.     db    0CCh,0CCh,0CCh,0FCh,0CCh,0CCh,0CCh,000h        ; 048h
  180.     db    8 dup(0)
  181.     db    078h,030h,030h,030h,030h,030h,078h,000h        ; 049h
  182.     db    8 dup(0)
  183.     db    01Eh,00Ch,00Ch,00Ch,0CCh,0CCh,078h,000h        ; 04Ah
  184.     db    8 dup(0)
  185.     db    0E6h,066h,06Ch,078h,06Ch,066h,0E6h,000h        ; 04Bh
  186.     db    8 dup(0)
  187.     db    0F0h,060h,060h,060h,062h,066h,0FEh,000h        ; 04Ch
  188.     db    8 dup(0)
  189.     db    0C6h,0EEh,0FEh,0FEh,0D6h,0C6h,0C6h,000h        ; 04Dh
  190.     db    8 dup(0)
  191.     db    0C6h,0E6h,0F6h,0DEh,0CEh,0C6h,0C6h,000h        ; 04Eh
  192.     db    8 dup(0)
  193.     db    038h,06Ch,0C6h,0C6h,0C6h,06Ch,038h,000h        ; 04Fh
  194.     db    8 dup(0)
  195.     db    0FCh,066h,066h,07Ch,060h,060h,0F0h,000h        ; 050h
  196.     db    8 dup(0)
  197.     db    078h,0CCh,0CCh,0CCh,0DCh,078h,01Ch,000h        ; 051h
  198.     db    8 dup(0)
  199.     db    0FCh,066h,066h,07Ch,06Ch,066h,0E6h,000h        ; 052h
  200.     db    8 dup(0)
  201.     db    078h,0CCh,0E0h,070h,01Ch,0CCh,078h,000h        ; 053h
  202.     db    8 dup(0)
  203.     db    0FCh,0B4h,030h,030h,030h,030h,078h,000h        ; 054h
  204.     db    8 dup(0)
  205.     db    0CCh,0CCh,0CCh,0CCh,0CCh,0CCh,0FCh,000h        ; 055h
  206.     db    8 dup(0)
  207.     db    0CCh,0CCh,0CCh,0CCh,0CCh,078h,030h,000h        ; 056h
  208.     db    8 dup(0)
  209.     db    0C6h,0C6h,0C6h,0D6h,0FEh,0EEh,0C6h,000h        ; 057h
  210.     db    8 dup(0)
  211.     db    0C6h,0C6h,06Ch,038h,038h,06Ch,0C6h,000h        ; 058h
  212.     db    8 dup(0)
  213.     db    0CCh,0CCh,0CCh,078h,030h,030h,078h,000h        ; 059h
  214.     db    8 dup(0)
  215.     db    0FEh,0C6h,08Ch,018h,032h,066h,0FEh,000h        ; 05Ah
  216.     db    8 dup(0)
  217.     db    078h,060h,060h,060h,060h,060h,078h,000h        ; 05Bh
  218.     db    8 dup(0)
  219.     db    0C0h,060h,030h,018h,00Ch,006h,002h,000h        ; 05Ch
  220.     db    8 dup(0)
  221.     db    078h,018h,018h,018h,018h,018h,078h,000h        ; 05Dh
  222.     db    8 dup(0)
  223.     db    010h,038h,06Ch,0C6h,000h,000h,000h,000h        ; 05Eh
  224.     db    8 dup(0)
  225.     db    000h,000h,000h,000h,000h,000h,000h,0FFh        ; 05Fh
  226.     db    8 dup(0)
  227.     db    030h,030h,018h,000h,000h,000h,000h,000h        ; 060h
  228.     db    8 dup(0)
  229.     db    000h,000h,078h,00Ch,07Ch,0CCh,076h,000h        ; 061h
  230.     db    8 dup(0)
  231.     db    0E0h,060h,060h,07Ch,066h,066h,0DCh,000h        ; 062h
  232.     db    8 dup(0)
  233.     db    000h,000h,078h,0CCh,0C0h,0CCh,078h,000h        ; 063h
  234.     db    8 dup(0)
  235.     db    01Ch,00Ch,00Ch,07Ch,0CCh,0CCh,076h,000h        ; 064h
  236.     db    8 dup(0)
  237.     db    000h,000h,078h,0CCh,0FCh,0C0h,078h,000h        ; 065h
  238.     db    8 dup(0)
  239.     db    038h,06Ch,060h,0F0h,060h,060h,0F0h,000h        ; 066h
  240.     db    8 dup(0)
  241.     db    000h,000h,076h,0CCh,0CCh,07Ch,00Ch,0F8h        ; 067h
  242.     db    8 dup(0)
  243.     db    0E0h,060h,06Ch,076h,066h,066h,0E6h,000h        ; 068h
  244.     db    8 dup(0)
  245.     db    030h,000h,070h,030h,030h,030h,078h,000h        ; 069h
  246.     db    8 dup(0)
  247.     db    00Ch,000h,00Ch,00Ch,00Ch,0CCh,0CCh,078h        ; 06Ah
  248.     db    8 dup(0)
  249.     db    0E0h,060h,066h,06Ch,078h,06Ch,0E6h,000h        ; 06Bh
  250.     db    8 dup(0)
  251.     db    070h,030h,030h,030h,030h,030h,078h,000h        ; 06Ch
  252.     db    8 dup(0)
  253.     db    000h,000h,0CCh,0FEh,0FEh,0D6h,0C6h,000h        ; 06Dh
  254.     db    8 dup(0)
  255.     db    000h,000h,0F8h,0CCh,0CCh,0CCh,0CCh,000h        ; 06Eh
  256.     db    8 dup(0)
  257.     db    000h,000h,078h,0CCh,0CCh,0CCh,078h,000h        ; 06Fh
  258.     db    8 dup(0)
  259.     db    000h,000h,0DCh,066h,066h,07Ch,060h,0F0h        ; 070h
  260.     db    8 dup(0)
  261.     db    000h,000h,076h,0CCh,0CCh,07Ch,00Ch,01Eh        ; 071h
  262.     db    8 dup(0)
  263.     db    000h,000h,0DCh,076h,066h,060h,0F0h,000h        ; 072h
  264.     db    8 dup(0)
  265.     db    000h,000h,07Ch,0C0h,078h,00Ch,0F8h,000h        ; 073h
  266.     db    8 dup(0)
  267.     db    010h,030h,07Ch,030h,030h,034h,018h,000h        ; 074h
  268.     db    8 dup(0)
  269.     db    000h,000h,0CCh,0CCh,0CCh,0CCh,076h,000h        ; 075h
  270.     db    8 dup(0)
  271.     db    000h,000h,0CCh,0CCh,0CCh,078h,030h,000h        ; 076h
  272.     db    8 dup(0)
  273.     db    000h,000h,0C6h,0D6h,0FEh,0FEh,06Ch,000h        ; 077h
  274.     db    8 dup(0)
  275.     db    000h,000h,0C6h,06Ch,038h,06Ch,0C6h,000h        ; 078h
  276.     db    8 dup(0)
  277.     db    000h,000h,0CCh,0CCh,0CCh,07Ch,00Ch,0F8h        ; 079h
  278.     db    8 dup(0)
  279.     db    000h,000h,0FCh,098h,030h,064h,0FCh,000h        ; 07Ah
  280.     db    8 dup(0)
  281.     db    01Ch,030h,030h,0E0h,030h,030h,01Ch,000h        ; 07Bh
  282.     db    8 dup(0)
  283.     db    018h,018h,018h,000h,018h,018h,018h,000h        ; 07Ch
  284.     db    8 dup(0)
  285.     db    0E0h,030h,030h,01Ch,030h,030h,0E0h,000h        ; 07Dh
  286.     db    8 dup(0)
  287.     db    076h,0DCh,000h,000h,000h,000h,000h,000h        ; 07Eh
  288.     db    8 dup(0)
  289.     db    000h,010h,038h,06Ch,0C6h,0C6h,0FEh,000h        ; 07Fh
  290.     db    8 dup(0)
  291.     db    078h,0CCh,0C0h,0CCh,078h,018h,00Ch,078h        ; 080h
  292.     db    8 dup(0)
  293.     db    000h,066h,000h,066h,066h,066h,03Fh,000h        ; 081h
  294.     db    8 dup(0)
  295.     db    00Eh,000h,03Ch,066h,07Eh,060h,03Ch,000h        ; 082h
  296.     db    8 dup(0)
  297.     db    07Eh,0C3h,03Ch,006h,03Eh,066h,03Fh,000h        ; 083h
  298.     db    8 dup(0)
  299.     db    066h,000h,03Ch,006h,03Eh,066h,03Fh,000h        ; 084h
  300.     db    8 dup(0)
  301.     db    070h,000h,03Ch,006h,03Eh,066h,03Fh,000h        ; 085h
  302.     db    8 dup(0)
  303.     db    018h,018h,03Ch,006h,03Eh,066h,03Fh,000h        ; 086h
  304.     db    8 dup(0)
  305.     db    000h,000h,03Ch,060h,060h,03Ch,006h,01Ch        ; 087h
  306.     db    8 dup(0)
  307.     db    07Eh,0C3h,03Ch,066h,07Eh,060h,03Ch,000h        ; 088h
  308.     db    8 dup(0)
  309.     db    066h,000h,03Ch,066h,07Eh,060h,03Ch,000h        ; 089h
  310.     db    8 dup(0)
  311.     db    070h,000h,03Ch,066h,07Eh,060h,03Ch,000h        ; 08Ah
  312.     db    8 dup(0)
  313.     db    066h,000h,038h,018h,018h,018h,03Ch,000h        ; 08Bh
  314.     db    8 dup(0)
  315.     db    07Ch,0C6h,038h,018h,018h,018h,03Ch,000h        ; 08Ch
  316.     db    8 dup(0)
  317.     db    070h,000h,038h,018h,018h,018h,03Ch,000h        ; 08Dh
  318.     db    8 dup(0)
  319.     db    063h,01Ch,036h,063h,07Fh,063h,063h,000h        ; 08Eh
  320.     db    8 dup(0)
  321.     db    018h,018h,000h,03Ch,066h,07Eh,066h,000h        ; 08Fh
  322.     db    8 dup(0)
  323.     db    00Eh,000h,07Eh,030h,03Ch,030h,07Eh,000h        ; 090h
  324.     db    8 dup(0)
  325.     db    000h,000h,07Fh,00Ch,07Fh,0CCh,07Fh,000h        ; 091h
  326.     db    8 dup(0)
  327.     db    01Fh,036h,066h,07Fh,066h,066h,067h,000h        ; 092h
  328.     db    8 dup(0)
  329.     db    03Ch,066h,000h,03Ch,066h,066h,03Ch,000h        ; 093h
  330.     db    8 dup(0)
  331.     db    000h,066h,000h,03Ch,066h,066h,03Ch,000h        ; 094h
  332.     db    8 dup(0)
  333.     db    000h,070h,000h,03Ch,066h,066h,03Ch,000h        ; 095h
  334.     db    8 dup(0)
  335.     db    03Ch,066h,000h,066h,066h,066h,03Fh,000h        ; 096h
  336.     db    8 dup(0)
  337.     db    000h,070h,000h,066h,066h,066h,03Fh,000h        ; 097h
  338.     db    8 dup(0)
  339.     db    000h,066h,000h,066h,066h,03Eh,006h,07Ch        ; 098h
  340.     db    8 dup(0)
  341.     db    0C3h,018h,03Ch,066h,066h,03Ch,018h,000h        ; 099h
  342.     db    8 dup(0)
  343.     db    066h,000h,066h,066h,066h,066h,03Ch,000h        ; 09Ah
  344.     db    8 dup(0)
  345.     db    018h,018h,07Eh,0C0h,0C0h,07Eh,018h,018h        ; 09Bh
  346.     db    8 dup(0)
  347.     db    01Ch,036h,032h,078h,030h,073h,07Eh,000h        ; 09Ch
  348.     db    8 dup(0)
  349.     db    066h,066h,03Ch,07Eh,018h,07Eh,018h,018h        ; 09Dh
  350.     db    8 dup(0)
  351.     db    0F8h,0CCh,0CCh,0FAh,0C6h,0CFh,0C6h,0C7h        ; 09Eh
  352.     db    8 dup(0)
  353.     db    00Eh,01Bh,018h,03Ch,018h,018h,0D8h,070h        ; 09Fh
  354.     db    8 dup(0)
  355.     db    00Eh,000h,03Ch,006h,03Eh,066h,03Fh,000h        ; 0A0h
  356.     db    8 dup(0)
  357.     db    01Ch,000h,038h,018h,018h,018h,03Ch,000h        ; 0A1h
  358.     db    8 dup(0)
  359.     db    000h,00Eh,000h,03Ch,066h,066h,03Ch,000h        ; 0A2h
  360.     db    8 dup(0)
  361.     db    000h,00Eh,000h,066h,066h,066h,03Fh,000h        ; 0A3h
  362.     db    8 dup(0)
  363.     db    000h,07Ch,000h,07Ch,066h,066h,066h,000h        ; 0A4h
  364.     db    8 dup(0)
  365.     db    07Eh,000h,066h,076h,07Eh,06Eh,066h,000h        ; 0A5h
  366.     db    8 dup(0)
  367.     db    03Ch,06Ch,06Ch,03Eh,000h,07Eh,000h,000h        ; 0A6h
  368.     db    8 dup(0)
  369.     db    038h,06Ch,06Ch,038h,000h,07Ch,000h,000h        ; 0A7h
  370.     db    8 dup(0)
  371.     db    018h,000h,018h,030h,060h,066h,03Ch,000h        ; 0A8h
  372.     db    8 dup(0)
  373.     db    000h,000h,000h,07Eh,060h,060h,000h,000h        ; 0A9h
  374.     db    8 dup(0)
  375.     db    000h,000h,000h,07Eh,006h,006h,000h,000h        ; 0AAh
  376.     db    8 dup(0)
  377.     db    0C3h,0C6h,0CCh,0DEh,033h,066h,0CCh,00Fh        ; 0ABh
  378.     db    8 dup(0)
  379.     db    0C3h,0C6h,0CCh,0DBh,037h,06Fh,0CFh,003h        ; 0ACh
  380.     db    8 dup(0)
  381.     db    018h,018h,000h,018h,018h,018h,018h,000h        ; 0ADh
  382.     db    8 dup(0)
  383.     db    000h,033h,066h,0CCh,066h,033h,000h,000h        ; 0AEh
  384.     db    8 dup(0)
  385.     db    000h,0CCh,066h,033h,066h,0CCh,000h,000h        ; 0AFh
  386.     db    8 dup(0)
  387.     db    022h,088h,022h,088h,022h,088h,022h,088h        ; 0B0h
  388.     db    8 dup(0)
  389.     db    055h,0AAh,055h,0AAh,055h,0AAh,055h,0AAh        ; 0B1h
  390.     db    8 dup(0)
  391.     db    0DBh,077h,0DBh,0EEh,0DBh,077h,0DBh,0EEh        ; 0B2h
  392.     db    8 dup(0)
  393.     db    018h,018h,018h,018h,018h,018h,018h,018h        ; 0B3h
  394.     db    8 dup(0)
  395.     db    018h,018h,018h,018h,0F8h,018h,018h,018h        ; 0B4h
  396.     db    8 dup(0)
  397.     db    018h,018h,0F8h,018h,0F8h,018h,018h,018h        ; 0B5h
  398.     db    8 dup(0)
  399.     db    036h,036h,036h,036h,0F6h,036h,036h,036h        ; 0B6h
  400.     db    8 dup(0)
  401.     db    000h,000h,000h,000h,0FEh,036h,036h,036h        ; 0B7h
  402.     db    8 dup(0)
  403.     db    000h,000h,0F8h,018h,0F8h,018h,018h,018h        ; 0B8h
  404.     db    8 dup(0)
  405.     db    036h,036h,0F6h,006h,0F6h,036h,036h,036h        ; 0B9h
  406.     db    8 dup(0)
  407.     db    036h,036h,036h,036h,036h,036h,036h,036h        ; 0BAh
  408.     db    8 dup(0)
  409.     db    000h,000h,0FEh,006h,0F6h,036h,036h,036h        ; 0BBh
  410.     db    8 dup(0)
  411.     db    036h,036h,0F6h,006h,0FEh,000h,000h,000h        ; 0BCh
  412.     db    8 dup(0)
  413.     db    036h,036h,036h,036h,0FEh,000h,000h,000h        ; 0BDh
  414.     db    8 dup(0)
  415.     db    018h,018h,0F8h,018h,0F8h,000h,000h,000h        ; 0BEh
  416.     db    8 dup(0)
  417.     db    000h,000h,000h,000h,0F8h,018h,018h,018h        ; 0BFh
  418.     db    8 dup(0)
  419.     db    018h,018h,018h,018h,01Fh,000h,000h,000h        ; 0C0h
  420.     db    8 dup(0)
  421.     db    018h,018h,018h,018h,0FFh,000h,000h,000h        ; 0C1h
  422.     db    8 dup(0)
  423.     db    000h,000h,000h,000h,0FFh,018h,018h,018h        ; 0C2h
  424.     db    8 dup(0)
  425.     db    018h,018h,018h,018h,01Fh,018h,018h,018h        ; 0C3h
  426.     db    8 dup(0)
  427.     db    000h,000h,000h,000h,0FFh,000h,000h,000h        ; 0C4h
  428.     db    8 dup(0)
  429.     db    018h,018h,018h,018h,0FFh,018h,018h,018h        ; 0C5h
  430.     db    8 dup(0)
  431.     db    018h,018h,01Fh,018h,01Fh,018h,018h,018h        ; 0C6h
  432.     db    8 dup(0)
  433.     db    036h,036h,036h,036h,037h,036h,036h,036h        ; 0C7h
  434.     db    8 dup(0)
  435.     db    036h,036h,037h,030h,03Fh,000h,000h,000h        ; 0C8h
  436.     db    8 dup(0)
  437.     db    000h,000h,03Fh,030h,037h,036h,036h,036h        ; 0C9h
  438.     db    8 dup(0)
  439.     db    036h,036h,0F7h,000h,0FFh,000h,000h,000h        ; 0CAh
  440.     db    8 dup(0)
  441.     db    000h,000h,0FFh,000h,0F7h,036h,036h,036h        ; 0CBh
  442.     db    8 dup(0)
  443.     db    036h,036h,037h,030h,037h,036h,036h,036h        ; 0CCh
  444.     db    8 dup(0)
  445.     db    000h,000h,0FFh,000h,0FFh,000h,000h,000h        ; 0CDh
  446.     db    8 dup(0)
  447.     db    036h,036h,0F7h,000h,0F7h,036h,036h,036h        ; 0CEh
  448.     db    8 dup(0)
  449.     db    018h,018h,0FFh,000h,0FFh,000h,000h,000h        ; 0CFh
  450.     db    8 dup(0)
  451.     db    036h,036h,036h,036h,0FFh,000h,000h,000h        ; 0D0h
  452.     db    8 dup(0)
  453.     db    000h,000h,0FFh,000h,0FFh,018h,018h,018h        ; 0D1h
  454.     db    8 dup(0)
  455.     db    000h,000h,000h,000h,0FFh,036h,036h,036h        ; 0D2h
  456.     db    8 dup(0)
  457.     db    036h,036h,036h,036h,03Fh,000h,000h,000h        ; 0D3h
  458.     db    8 dup(0)
  459.     db    018h,018h,01Fh,018h,01Fh,000h,000h,000h        ; 0D4h
  460.     db    8 dup(0)
  461.     db    000h,000h,01Fh,018h,01Fh,018h,018h,018h        ; 0D5h
  462.     db    8 dup(0)
  463.     db    000h,000h,000h,000h,03Fh,036h,036h,036h        ; 0D6h
  464.     db    8 dup(0)
  465.     db    036h,036h,036h,036h,0FFh,036h,036h,036h        ; 0D7h
  466.     db    8 dup(0)
  467.     db    018h,018h,0FFh,018h,0FFh,018h,018h,018h        ; 0D8h
  468.     db    8 dup(0)
  469.     db    018h,018h,018h,018h,0F8h,000h,000h,000h        ; 0D9h
  470.     db    8 dup(0)
  471.     db    000h,000h,000h,000h,01Fh,018h,018h,018h        ; 0DAh
  472.     db    8 dup(0)
  473.     db    0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh        ; 0DBh
  474.     db    8 dup(0)
  475.     db    000h,000h,000h,000h,0FFh,0FFh,0FFh,0FFh        ; 0DCh
  476.     db    8 dup(0)
  477.     db    0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h,0F0h        ; 0DDh
  478.     db    8 dup(0)
  479.     db    00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh,00Fh        ; 0DEh
  480.     db    8 dup(0)
  481.     db    0FFh,0FFh,0FFh,0FFh,000h,000h,000h,000h        ; 0DFh
  482.     db    8 dup(0)
  483.     db    000h,000h,03Bh,06Eh,064h,06Eh,03Bh,000h        ; 0E0h
  484.     db    8 dup(0)
  485.     db    000h,03Ch,066h,07Ch,066h,07Ch,060h,060h        ; 0E1h
  486.     db    8 dup(0)
  487.     db    000h,07Eh,066h,060h,060h,060h,060h,000h        ; 0E2h
  488.     db    8 dup(0)
  489.     db    000h,07Fh,036h,036h,036h,036h,036h,000h        ; 0E3h
  490.     db    8 dup(0)
  491.     db    07Eh,066h,030h,018h,030h,066h,07Eh,000h        ; 0E4h
  492.     db    8 dup(0)
  493.     db    000h,000h,03Fh,06Ch,06Ch,06Ch,038h,000h        ; 0E5h
  494.     db    8 dup(0)
  495.     db    000h,033h,033h,033h,033h,03Eh,030h,060h        ; 0E6h
  496.     db    8 dup(0)
  497.     db    000h,03Bh,06Eh,00Ch,00Ch,00Ch,00Ch,000h        ; 0E7h
  498.     db    8 dup(0)
  499.     db    07Eh,018h,03Ch,066h,066h,03Ch,018h,07Eh        ; 0E8h
  500.     db    8 dup(0)
  501.     db    01Ch,036h,063h,07Fh,063h,036h,01Ch,000h        ; 0E9h
  502.     db    8 dup(0)
  503.     db    01Ch,036h,063h,063h,036h,036h,077h,000h        ; 0EAh
  504.     db    8 dup(0)
  505.     db    00Eh,018h,00Ch,03Eh,066h,066h,03Ch,000h        ; 0EBh
  506.     db    8 dup(0)
  507.     db    000h,000h,07Eh,0DBh,0DBh,07Eh,000h,000h        ; 0ECh
  508.     db    8 dup(0)
  509.     db    006h,00Ch,07Eh,0DBh,0DBh,07Eh,060h,0C0h        ; 0EDh
  510.     db    8 dup(0)
  511.     db    01Ch,060h,0C0h,0FCh,0C0h,060h,01Ch,000h        ; 0EEh
  512.     db    8 dup(0)
  513.     db    03Ch,066h,066h,066h,066h,066h,066h,000h        ; 0EFh
  514.     db    8 dup(0)
  515.     db    000h,07Eh,000h,07Eh,000h,07Eh,000h,000h        ; 0F0h
  516.     db    8 dup(0)
  517.     db    018h,018h,07Eh,018h,018h,000h,07Eh,000h        ; 0F1h
  518.     db    8 dup(0)
  519.     db    030h,018h,00Ch,018h,030h,000h,07Eh,000h        ; 0F2h
  520.     db    8 dup(0)
  521.     db    00Ch,018h,030h,018h,00Ch,000h,07Eh,000h        ; 0F3h
  522.     db    8 dup(0)
  523.     db    00Eh,01Bh,01Bh,018h,018h,018h,018h,018h        ; 0F4h
  524.     db    8 dup(0)
  525.     db    018h,018h,018h,018h,018h,0D8h,0D8h,070h        ; 0F5h
  526.     db    8 dup(0)
  527.     db    018h,018h,000h,07Eh,000h,018h,018h,000h        ; 0F6h
  528.     db    8 dup(0)
  529.     db    000h,076h,0DCh,000h,076h,0DCh,000h,000h        ; 0F7h
  530.     db    8 dup(0)
  531.     db    038h,06Ch,06Ch,038h,000h,000h,000h,000h        ; 0F8h
  532.     db    8 dup(0)
  533.     db    000h,000h,000h,018h,018h,000h,000h,000h        ; 0F9h
  534.     db    8 dup(0)
  535.     db    000h,000h,000h,000h,018h,000h,000h,000h        ; 0FAh
  536.     db    8 dup(0)
  537.     db    00Fh,00Ch,00Ch,00Ch,0ECh,06Ch,03Ch,01Ch        ; 0FBh
  538.     db    8 dup(0)
  539.     db    078h,06Ch,06Ch,06Ch,06Ch,000h,000h,000h        ; 0FCh
  540.     db    8 dup(0)
  541.     db    070h,018h,030h,060h,078h,000h,000h,000h        ; 0FDh
  542.     db    8 dup(0)
  543.     db    000h,000h,03Ch,03Ch,03Ch,03Ch,000h,000h        ; 0FEh
  544.     db    8 dup(0)
  545.     db    000h,000h,000h,000h,000h,000h,000h,000h        ; 0FFh
  546.     db    8 dup(0)
  547.  
  548.  
  549. label1:
  550.  
  551. ; set configuration switch on HGC Plus
  552.     mov    dx,3BFh            ; i/o port address
  553.     mov    al,1            ; activate RAM from B000:0000
  554.     out    dx,al            ;  through B000:7FFF
  555.  
  556. ; copy character definition table to B000:4000
  557.     mov    ax,0B000h
  558.     mov    es,ax
  559.     mov    di,4000h        ; ES:DI := B000:4000
  560.  
  561.     push    cs
  562.     pop    ds
  563.     mov    si,offset csdefs    ; DS:SI -> our character def table
  564.  
  565.     mov    cx,label1-csdefs    ; CX := size of table in bytes
  566.     rep    movsb            ; copy the table
  567.  
  568. ; Program the CRT controller to display 43 lines of 8 by 8 characters.
  569. ; Characters are displayed in a 9x8 matrix for better appearance.
  570. ;
  571.     mov    dx,3B4h            ; CRT controller register index port
  572.  
  573.     mov    si,offset regs00_0D    ; DS:SI -> start of table of register
  574.                     ;  values
  575.  
  576.     mov    cx,0Eh            ; CX := loop counter
  577.     xor    ah,ah            ; AH := 0 (initial CRT controller
  578.                     ;  register number)
  579. label2:    mov    al,ah
  580.     out    dx,al            ; store CRT controller index reg
  581.     
  582.     lodsb                ; AL := data for CRT controller reg
  583.     inc    dx            ; DX := 3B5h (CRT data reg port)
  584.     out    dx,al            ; store data to CRT controller reg
  585.     dec    dx            ; DX := 3B4h
  586.  
  587.     inc    ah            ; AH := next CRT controller index #
  588.     loop    label2
  589.  
  590.     mov    al,14h            ; xModeReg index number
  591.     out    dx,al
  592.  
  593.     lodsb
  594.     inc    dx
  595.     out    dx,al            ; configure xModeReg for RAM character
  596.                     ;  set and proper character width
  597.  
  598. ; update BIOS RAM area in segment 40h
  599.     mov    ax,40h
  600.     mov    ds,ax
  601.  
  602.     mov    word ptr ds:[4Ah],80    ; update CRT_COLS (80 columns)
  603.     mov    word ptr ds:[4Ch],1C00h    ; update CRT_LEN (80 columns * 43 rows
  604.                     ;  * 2 bytes/character, rounded up to
  605.                     ;  even 1K boundary)
  606. ; exit to DOS
  607.     mov    ax,4C00h
  608.     int    21h
  609.  
  610.  
  611. ; table of CRT controller register values
  612.  
  613. regs00_0D    db    61h,50h,52h,0Fh        ; regs 0 - 3 (9 wide)
  614.         db    2Dh,02h,2Bh,2Ch        ; regs 4 - 7 (8 high)
  615.         db    02h,07h,06h,07h        ; regs 8 - 0Bh (scans/char,
  616.                         ;  cursor location)
  617.         db    00h,00h            ; regs 0Ch - 0Dh (always zero)
  618.  
  619. xModeReg    db    01h            ; "4K RamFont", 9 dot wide
  620.                         ;  characters
  621.  
  622. cseg    ends
  623.  
  624.     end    label0
  625.